package model;

import java.io.Serializable;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity
@Table(name = "funcionario")
public class Funcionario implements Serializable {
	
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column(name = "id_funcionario",length = 5, nullable = false, columnDefinition = "SMALLINT(5)")		
	private Long id;
	
	@Column(name = "nome", length = 30,	nullable = false, columnDefinition = "VARCHAR(30)")
	private String nome;
	
	@Column(name = "telefone", length = 30,	nullable = false, columnDefinition = "VARCHAR(30)")
	private String telefone;
	
	@Column(name = "celular", length = 30,	nullable = false, columnDefinition = "VARCHAR(30)")
	private String celular;
	
	@OneToMany(mappedBy = "funcionario")
	private List<Agendamento> agendamentos;	
	
	@ManyToOne
	@JoinColumn(name = "cod_usuario")
	private Usuario usuario;
	
	@ManyToMany
	@JoinTable(name = "funcionario_especialidade",
	   joinColumns =        @JoinColumn(name="id_funcionario"),
	   inverseJoinColumns = @JoinColumn(name="id_especialidade"))
	private List<Especialidade> especialidades;
	
	public Funcionario(){
	
	}

	public Long getId() {
		return id;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getTelefone() {
		return telefone;
	}

	public void setTelefone(String telefone) {
		this.telefone = telefone;
	}

	public String getCelular() {
		return celular;
	}

	public void setCelular(String celular) {
		this.celular = celular;
	}
	
	public void setLista(List<Especialidade> especs){
		this.especialidades = especs;
	}
	
	public List<Especialidade> getLista(){
		return especialidades;
	}
	
	  @Override
	    public int hashCode() {
	        final int prime = 31;
	        int result = 1;
	        result = prime * result + ((id == null) ? 0 : id.hashCode());
	        return result;
	    }
}
